/**
 * 文件描述如下：
 * 1. 对设备监控的信息进行处理
 * 2.
 * 3.
 * 4.
 */
import { ref } from 'vue'

const cpu = ref([
  { name: 'cpu负载', value: '', error: '', key: 'load', unit: '%', format: 2 },
  { name: 'cpu温度', value: '', error: '', key: 'temp', unit: '℃', format: 2 },
  {
    name: 'cpu利用率',
    value: '',
    error: '',
    key: 'util',
    unit: '%',
    format: 2,
  },
])

const gpu = ref([
  { name: 'GPU负载', value: '', error: '', key: 'load', unit: '%', format: 2 },
  {
    name: 'GPU共享内存占用率',
    value: '',
    error: '',
    key: 's-mem',
    unit: '%',
    format: 2,
  },
  {
    name: 'GPU共享内存占用率',
    value: '',
    error: '',
    key: 'p-mem',
    unit: '%',
    format: 2,
  },
  { name: 'GPU温度', value: '', error: '', key: 'temp', unit: '℃', format: 2 },
  {
    name: 'GPU利用率',
    value: '',
    error: '',
    key: 'util',
    unit: '%',
    format: 2,
  },
])

const mem = ref([
  {
    name: '内存总量',
    value: '',
    error: '',
    key: 'total',
    unit: 'MB',
    format: 2,
  },
  {
    name: '已用内存',
    value: '',
    error: '',
    key: 'used',
    unit: 'MB',
    format: 2,
  },
  {
    name: '可用内存',
    value: '',
    error: '',
    key: 'free',
    unit: 'MB',
    format: 2,
  },
])

const disk = ref([
  { key: 'total', name: '磁盘总量', error: '', value: '', unit: 'GB' },
  { key: 'used', name: '已用磁盘', error: '', value: '', unit: 'GB' },
  { key: 'fred', name: '可用磁盘', error: '', value: '', unit: 'GB' },
  { key: 'tps', name: '每秒IO请求数', error: '', value: '', unit: '条' },
  {
    key: 'write',
    name: '每秒写入磁盘数据量',
    error: '',
    value: '',
    unit: 'Byte/s',
  },
  {
    key: 'read',
    name: '每秒读出磁盘数据量',
    error: '',
    value: '',
    unit: 'Byte/s',
  },
])

const net = ref([
  { key: 'rx', name: '每秒接收数据包数量', error: '', value: 0, unit: '包' },
  { key: 'tx', name: '每秒发送数据包数量', error: '', value: 0, unit: '包' },
  {
    key: 'rx-bytes',
    name: '每秒接收数据字节数',
    error: '',
    value: 0,
    unit: 'Byte',
  },
  {
    key: 'tx-bytes',
    name: '每秒发送数据字节数',
    error: '',
    value: 0,
    unit: 'Byte',
  },
])

const data = { cpu, gpu, mem, disk, net }

export const dataPro_equipment = (param) => {
  Object.keys(data).forEach((key) => {
    data[key].value.forEach((item) => {
      item.value = param[key]?.[item.key] ?? 0
      item.value = item.format ? item.value.toFixed(item.format) : item.value
      item.value = item?.unit ? item.value + ` ${item.unit}` : item.value
    })
  })

  return data
}
